from appium import webdriver#导入Appium的webserver
from appium.webdriver.common.touch_action import TouchAction#导入触摸操作类
from selenium.webdriver.support.ui import WebDriverWait#导入显示等待类
from selenium.webdriver.support import expected_conditions as EC#导入预期条件类


class Base():
    def __init__(self):
        #配置连接设备参数
        cap={
              "platformName": "Android",#平台名称为Android
              "deviceName": "emulator-5554",#设备名称
              "automationName": "uiautomator2",#使用自动化引擎
              "appPackage": "com.kongfz.app",#要测试的应用包名
              "appActivity": ".home.mvvm.homepage.HomeActivity",#要启动的Activity
              "noReset": True#不重置应用状态
            }
        #连接appium服务器,创建driver对象
        self.driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',cap)
        #设置隐式等待10s
        self.driver.implicitly_wait(10)
    #定位查找元素
    def find_ele(self,loc):
        ele=self.driver.find_element(*loc)#通过传入的定位信息来查找元素
        return ele#返回找到的元素
    #显示等待查找元素
    def find_wait(self,loc):
        #显示等待10s,直到元素可点击
        ele=WebDriverWait(self.driver,10).until(EC.element_to_be_clickable(loc))
        return ele
    #滑动
    def hua_(self,a,b,c,d):
        #从(a,d)滑动到(c,d),持续200毫秒
        self.driver.swipe(a,b,c,d,200)
    #截图
    def jie_(self,filename):
        self.driver.save_screenshot(filename)#保存截图到指定文件
    #退出驱动的方法
    def tui_(self):
        self.driver.quit()#退出driver
    #点击
    def dian_(self,x,y):
        #在(x,y)处点击,持续200毫秒
        self.driver.tap([(x,y)],200)
    #返回系统按钮
    def fan_(self):
        self.driver.press_keycode(3)#按手机的返回键(keycode 3表示返回)
    #长按
    def chang_(self,loc):
        #先定位元素
        ele=self.driver.find_element(*loc)
        #对元素进行长按,然后再释放
        action=TouchAction(self.driver).long_press(ele,duration=1000).release().perform()
    #拖拽
    def tuo_(self,start,end):
        #从起点坐标拖拽到终点坐标,中间等待800毫秒
        action=TouchAction(self.driver).press(x=start[0],y=start[1]).wait(ms=800).move_to(x=end[0],y=end[1]).release().perform()





